Struct rtx def
このページを編集する際は，編集に関する方針に従ってください． 概要 *gcc-4.1.0/gcc/rtl.hにて定義 * RTL (コンパイラ内部で使用される S 式) のノード，rtx の本体 ~ 参考サイト : http://www.fuka.info.waseda.ac.jp/~mao/study/gcc/rtl.html 実装 179 struct rtx_def GTY((chain_next ("RTX_NEXT (&%h)"), 180 chain_prev ("RTX_PREV (&%h)"))) 181 { 182 /* The kind of expression this is. */ 183 ENUM_BITFIELD(rtx_code) code: 16; 184 185 /* The kind of value the expression has. */ 186 ENUM_BITFIELD(machine_mode) mode : 8; 187 188 /* 1 in a MEM if we should keep the alias set for this mem unchanged 189 when we access a component. 190 1 in a CALL_INSN if it is a sibling call. 191 1 in a SET that is for a return. 192 In a CODE_LABEL, part of the two-bit alternate entry field. */ 193 unsigned int jump : 1; 194 /* In a CODE_LABEL, part of the two-bit alternate entry field. 195 1 in a MEM if it cannot trap. */ 196 unsigned int call : 1; 197 /* 1 in a REG, MEM, or CONCAT if the value is set at most once, anywhere. 198 1 in a SUBREG if it references an unsigned object whose mode has been 199 from a promoted to a wider mode. 200 1 in a SYMBOL_REF if it addresses something in the per-function 201 constants pool. 202 1 in a CALL_INSN, NOTE, or EXPR_LIST for a const or pure call. 203 1 in a JUMP_INSN, CALL_INSN, or INSN of an annulling branch. */ 204 unsigned int unchanging : 1; 205 /* 1 in a MEM or ASM_OPERANDS expression if the memory reference is volatile. 206 1 in an INSN, CALL_INSN, JUMP_INSN, CODE_LABEL, BARRIER, or NOTE 207 if it has been deleted. 208 1 in a REG expression if corresponds to a variable declared by the user, 209 0 for an internally generated temporary. 210 1 in a SUBREG with a negative value. 211 1 in a LABEL_REF or in a REG_LABEL note for a non-local label. 212 In a SYMBOL_REF, this flag is used for machine-specific purposes. */ 213 unsigned int volatil : 1; 214 /* 1 in a MEM referring to a field of an aggregate. 215 0 if the MEM was a variable or the result of a * operator in C; 216 1 if it was the result of a . or -> operator (on a struct) in C. 217 1 in a REG if the register is used only in exit code a loop. 218 1 in a SUBREG expression if was generated from a variable with a 219 promoted mode. 220 1 in a CODE_LABEL if the label is used for nonlocal gotos 221 and must not be deleted even if its count is zero. 222 1 in an INSN, JUMP_INSN or CALL_INSN if this insn must be scheduled 223 together with the preceding insn. Valid only within sched. 224 1 in an INSN, JUMP_INSN, or CALL_INSN if insn is in a delay slot and 225 from the target of a branch. Valid from reorg until end of compilation; 226 cleared before used. */ 227 unsigned int in_struct : 1; 228 /* At the end of RTL generation, 1 if this rtx is used. This is used for 229 copying shared structure. See `unshare_all_rtl'. 230 In a REG, this is not needed for that purpose, and used instead 231 in `leaf_renumber_regs_insn'. 232 1 in a SYMBOL_REF, means that emit_library_call 233 has used it as the function. */ 234 unsigned int used : 1; 235 /* 1 in an INSN or a SET if this rtx is related to the call frame, 236 either changing how we compute the frame address or saving and 237 restoring registers in the prologue and epilogue. 238 1 in a REG or MEM if it is a pointer. 239 1 in a SYMBOL_REF if it addresses something in the per-function 240 constant string pool. */ 241 unsigned frame_related : 1; 242 /* 1 in a REG or PARALLEL that is the current function's return value. 243 1 in a MEM if it refers to a scalar. 244 1 in a SYMBOL_REF for a weak symbol. */ 245 unsigned return_val : 1; 246 247 /* The first element of the operands of this rtx. 248 The number of operands and their types are controlled 249 by the `code' field, according to rtl.def. */ 250 union u { 251 rtunion fld1; 252 HOST_WIDE_INT hwint1; 253 struct real_value rv; 254 } GTY ((special ("rtx_def"), desc ("GET_CODE (&%0)"))) u; 255 };